<?php

////比如下面这个,不用修改User类中的代码,也能在执行User类方法的时候,写入日志
//class User
//{
//    private $name;
//
//    /**
//     * @return mixed
//     */
//    public function getName()
//    {
//        return $this->name;
//    }
//
//    /**
//     * @param mixed $name
//     */
//    public function setName($name): void
//    {
//        $this->name = $name;
//    }
//}
//
//class Log
//{
//    private $obj;
//
//    function __call($method, $arguments)
//    {
////        echo "$method (" . join(",", $arguments) . ")" . "\n";
//        $cron = call_user_func_array([$this->obj, $method], $arguments);
////        $cron = $this->obj->{$method()};
//        return $cron;
//    }
//
//    public function __construct($obj)
//    {
//        $this->obj = $obj;
//    }
//}
//$user = new User();
//$cl = new Log($user);
//$cl->setName('Winner');
//$name = $cl->getName();
//echo $name;
//echo $user->getName();


class Test{
    public $a = 123;
    public function getName(){
         return $this->a;
    }
    public  function Get(){
      $test1 =  new Test1();
      $test1->Sel([$this,'getName']);
}
}

class Test1{

     public function Sel($arr){
       echo  call_user_func($arr);
}

}

$test = new Test();
$test->Get();
